package pe.com.cruzdelsur.util;

import java.io.IOException;
import java.util.Set;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.persistence.Query;

import org.primefaces.context.RequestContext;

public class Util {

	public static String generarAleatorio() {
		int Max = (3) + 1;
		int Min = 1;
		return String.valueOf(((int) (Math.random() * (Max - Min)) + Min));
	}
	
	
	public static RequestContext getRequestContext() {
		return RequestContext.getCurrentInstance();
	}
	
	public static void mostrarOcultarDialog(String idWidgetVar, boolean esMostrar) {
		StringBuilder sb = new StringBuilder();
		sb.append(idWidgetVar);
		if (esMostrar) {
			sb.append(Constantes.MOSTRAR_DIALOG);
		} else {
			sb.append(Constantes.OCULTAR_DIALOG);
		}
		getRequestContext().execute(sb.toString());
	}

	
	
	public static String idToValorTipoActividad(String id) {
		String valor="";
		if(id.equals("1")){
			valor=Constantes.TIPO_ACTIVIDAD_1.toUpperCase();
		}else if(id.equals("2")){
			valor=Constantes.TIPO_ACTIVIDAD_2.toUpperCase();
		}else if(id.equals("3")){
			valor=Constantes.TIPO_ACTIVIDAD_3.toUpperCase();
		}else if(id.equals("4")){
			valor=Constantes.TIPO_ACTIVIDAD_4.toUpperCase();
		}else if(id.equals("5")){
			valor=Constantes.TIPO_ACTIVIDAD_5.toUpperCase();
		}		
		return valor;
	}
	
	public static String idToValorTipoRegimen(String id) {
		String valor="";
		if(id.equals("1")){
			valor=Constantes.TIPO_REGIMEN_1.toUpperCase();
		}else if(id.equals("2")){
			valor=Constantes.TIPO_REGIMEN_2.toUpperCase();
		}	
		return valor;
	}

	public static String idToValorTipoRegimenFechaUnidadMedida(String id) {
		String valor="";
		if(id.equals("1")){
			valor=Constantes.TIPO_REGIMEN_1_UNIDAD_MEDIDA_1.toUpperCase();
		}else if(id.equals("2")){
			valor=Constantes.TIPO_REGIMEN_1_UNIDAD_MEDIDA_2.toUpperCase();
		}else if(id.equals("3")){
			valor=Constantes.TIPO_REGIMEN_1_UNIDAD_MEDIDA_3.toUpperCase();
		}else if(id.equals("4")){
			valor=Constantes.TIPO_REGIMEN_1_UNIDAD_MEDIDA_4.toUpperCase();
		}else if(id.equals("5")){
			valor=Constantes.TIPO_REGIMEN_1_UNIDAD_MEDIDA_5.toUpperCase();
		}	
		return valor;
	}
	
	public static String idToValorTipoRegimenLecturaUnidadMedida(String id) {
		String valor="";
		if(id.equals("1")){
			valor=Constantes.TIPO_REGIMEN_2_UNIDAD_MEDIDA_1.toUpperCase();
		}else if(id.equals("2")){
			valor=Constantes.TIPO_REGIMEN_2_UNIDAD_MEDIDA_2.toUpperCase();
		}	
		return valor;
	}
	
	public static String idToValorTipoPrioridad(String id) {
		String valor="";
		if(id.equals("1")){
			valor=Constantes.TIPO_PRIORIDAD_1.toUpperCase();
		}else if(id.equals("2")){
			valor=Constantes.TIPO_PRIORIDAD_2.toUpperCase();
		}else if(id.equals("3")){
			valor=Constantes.TIPO_PRIORIDAD_3.toUpperCase();
		}
		return valor;
	}
	
	public static void establecerParam(Query query, String nombCampo, Object param, boolean esLike, boolean convertirMayuscula) {
		if (!esNuloOVacio(param)) {
			if (esLike) {
				query.setParameter(nombCampo, "%" + (convertirMayuscula?param.toString().toUpperCase():param) + "%");
			} else {
				query.setParameter(nombCampo, param);
			}
		}
	}
	public static void sendRedirect(String ruta) {

		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect(FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath() + "/" + ruta);
		} catch (IOException e) {

		}

	}
	
	public static boolean esNuloOVacio(Object valor) {
		if (valor == null) {
			return true;
		}
		if (valor instanceof Set<?>) {
			return true;
		}
		if (valor instanceof String
				&& ((String) valor).trim().length() == 0) {
			return true;
		}
		return false;
	}
	
	
	
	public static void mensajeErrorPorId(String mensaje, String idField) {
		FacesContext.getCurrentInstance().addMessage(idField, new FacesMessage(FacesMessage.SEVERITY_ERROR, mensaje, ""));
	}

	public static void mensajeInformacionPorId(String mensaje, String idField) {
		FacesContext.getCurrentInstance().addMessage(idField, new FacesMessage(FacesMessage.SEVERITY_INFO, mensaje, ""));
	}

	public static void mensajeAdvertenciaPorId(String mensaje, String idField) {
		FacesContext.getCurrentInstance().addMessage(idField, new FacesMessage(FacesMessage.SEVERITY_WARN, mensaje, ""));
	}

	public static void mensajeFatalPorId(String mensaje, String idField) {
		FacesContext.getCurrentInstance().addMessage(idField, new FacesMessage(FacesMessage.SEVERITY_FATAL, mensaje, ""));
	}
	
	public static void mensajeError(String mensaje) {
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, mensaje, ""));
	}

	public static void mensajeInformacion(String mensaje) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, mensaje, ""));
		context.getExternalContext().getFlash().setKeepMessages(true);
	}

	public static void mensajeAdvertencia(String mensaje) {
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, mensaje, ""));
	}

	public static void mensajeFatal(String mensaje) {
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, mensaje, ""));
	}
}
